import { Pipe, PipeTransform } from '@angular/core';
// import { DatePipe } from '@angular/common';
import { format } from 'date-fns';

/**
 * 将时间戳(秒)转为 正常日期时间格式
 * 如下格式可以被转换：
 *     时间戳,比如 1517999966 -> 2018-02-07 18:39:26
 *     毫秒,比如 1517999966000 -> 2018-02-07 18:39:26
 *     国际时间,比如 '2017-10-08T11:00:07.000Z' -> 2017-10-08 19:00:07
 */
@Pipe({
    name: 'datetime'
})
export class DatetimePipe implements PipeTransform {
    // datePipe: DatePipe;

    constructor() {
        // this.datePipe = new DatePipe('en-US');
    }

    transform(value: any): string {
        // 对于IE浏览器  DatePipe 时间转化格式有问题 带有AM、PM等字符  需要用别的方法重新转化
        // 但是这个问题在新版本的angular下已经修复
        // const format = 'yyyy-MM-dd HH:mm:ss';
        // let returnValue = this.datePipe.transform(msec, format);
        // return this.datePipe.transform(msec, format);
        const formatDate = 'YYYY-MM-DD HH:mm:ss';
        const illegal = '不合法的时间格式';
        let dt;
        if (typeof value === 'number') {
            // 如果是时间戳就转为毫秒
            const msec = String(value).length === 10 ? value * 1000 : value;
            dt = new Date(msec);
        } else {
            if (value) {
                dt = value;
            } else {
                return '';
            }
        }
        return dt ? format(dt, formatDate) : illegal;
    }
}
